The amount of software available to users is already so great that few can keep track even of what is being offered in any given market segment. To further complicate matters, even well-known and widely distributed software applications are sometimes upgraded so often that consumers are unwilling or unable to buy the latest version.
Another trend that is known to most modern computer users is that the applications themselves are becoming larger and larger, requiring more and more memory space, while often containing many features that only a few users ever care to use. This is usually not a problem for users whose desktop and laptop computers are relatively new, because the size of the memory and storage devices in these systems is typically more than adequate for loading and running the desired applications. On the other hand, the market for small, even hand-held, computers is growing, and many popular applications cannot be loaded into the small memories of these devices. Moreover, the border between traditional computers and devices such as mobile telephones is becoming less clear, as more and more software unrelated to voice communication per se, for example, network access and display applications, is being included within the telephones themselves.
One proposal that allows a user of a local computer system to access and use files (both executable files and data files), in particular, applications, residing in a remote system is for the local system to be a so-called “dumb terminal” that is connected to a more powerful central computer or network of computers. In this scheme, each user's local computer includes a simple operating system and a network connection but has few, if any, installed applications. Instead, the applications are installed only in the central computer, and users run the applications remotely. In other words, users select applications to run, submit data and commands as necessary, and view results on a local display, but actual processing occurs primarily or exclusively in the central system—the executable code of any given application is never loaded into any user's local computer.
One disadvantage of the “dumb terminal” approach relates to security: Because the user's data is transferred for processing to the central system, the user must be able to trust that system, as well as the channel connecting the user's local computer to the central system. Another disadvantage of this known arrangement is that the user is able to select from and access only those applications that are installed in the central system. If, for example, an upgraded version of some application is not centrally installed, then the user simply cannot access and benefit from it.
These disadvantages also affect remote access of pure data. For example, users may wish to examine or analyze portions of a large amount of data, or at least some data set that for other reasons is preferably stored remotely. This might be for the purposes of data mining, or for other conventional forms of data processing and display. In some cases, the whole data base (for example, the human genome) may be far too large to be stored within the user's local computer; similarly, transfer of the entire data base over the channel connecting the user's computer to the data base may be too slow.
Another common way for a user to remotely access both software and data is simply for the user to download the entire desired program (or data base) from a provider. Indeed, as network bandwidth and data transfer rates increase, downloading of software is rapidly becoming a preferred method for acquiring new software products and upgrades, replacing the traditional methods of ordering and physically loading files from a CD ROM disk.
One disadvantage of the currently available system of downloading is that it forces users to buy or at least download large programs or entire software packages, even though they may need only a small portion of their capabilities, or may need the software only for a limited time. Many users therefore prefer to save money and not to install the program at all.
Another disadvantage of existing downloading options is that they assume that there is enough memory in the user's machine to install and operate the software. In general, this assumption is justified, because the memory capacity of new computers tends to grow along with the memory requirements of new software. On the other hand, not everyone has the newest computer. Moreover, there is a separate development in the field of computers, whereby generalized computing hardware and software are being included in ever smaller portable devices such as hand-held or “palm-top” computers and even in mobile telephones. These devices often do not have the memory capacity to load and run standard versions of popular software packages.
One way to allow users of relatively smaller capacity computing devices such as palm-top computers to run software designed primarily for larger capacity machines is to modify, in particular scale down, the software to fit the resources of the smaller capacity devices. By definition, this means that users of such modified software will not have access to the full range of features of the software.
Downloading of applications also presents problems for software vendors, who worry about unauthorized copying. Such piracy is bad enough where applications are delivered on a physical medium such as a compact disk (CD), but is potentially even worse where a user has downloaded an application. Having legally downloaded one copy of the software, a software pirate could either copy (“burn”) the software into several CD's, or could in turn make the software available to other unauthorized users through downloading from the pirate's computer.
What is needed is an arrangement that allows a user to access and run, in real time, a potentially arbitrarily large number of applications and/or data that are installed or stored remotely. The arrangement should allow the user to retain local control of the execution of the applications and of the processing of potentially sensitive data. Ideally, the arrangement should be usable even in local computer systems that may themselves not have enough storage and memory space to load a desired application's code, or in other situations where the user chooses not to load the application. No scaling down or other modification of the software should be required; in other words, even users with a small-capacity computing device should ideally be able to access the same full range features available to users with larger capacity machines. The arrangement should also make it at least more difficult, and preferably impossible, to create unauthorized copies of applications. This invention provides such an arrangement.